$(document)
		.ready(
				function() {

					// themes, change CSS with JS
					// default theme(CSS) is cerulean, change it if needed
					var defaultTheme = 'cerulean';

					var currentTheme = $.cookie('currentTheme') == null ? defaultTheme
							: $.cookie('currentTheme');
					var msie = navigator.userAgent.match(/msie/i);
					$.browser = {};
					$.browser.msie = {};
					switchTheme(currentTheme);

					$('.navbar-toggle').click(function(e) {
						e.preventDefault();
						$('.nav-sm').html($('.navbar-collapse').html());
						$('.sidebar-nav').toggleClass('active');
						$(this).toggleClass('active');
					});

					var $sidebarNav = $('.sidebar-nav');

					// Hide responsive navbar on clicking outside
					$(document)
							.mouseup(
									function(e) {
										if (!$sidebarNav.is(e.target) // if
												// the
												// target
												// of
												// the
												// click
												// isn't
												// the
												// container...
												&& $sidebarNav.has(e.target).length === 0
												&& !$('.navbar-toggle').is(
														e.target)
												&& $('.navbar-toggle').has(
														e.target).length === 0
												&& $sidebarNav
														.hasClass('active')) // ...
										// nor
										// a
										// descendant
										// of
										// the
										// container
										{
											e.stopPropagation();
											$('.navbar-toggle').click();
										}
									});

					$('#themes a').click(function(e) {
						e.preventDefault();
						currentTheme = $(this).attr('data-value');
						$.cookie('currentTheme', currentTheme, {
							expires : 365
						});
						switchTheme(currentTheme);
					});

					function switchTheme(themeName) {
						if (themeName == 'classic') {
							$('#bs-css')
									.attr('href',
											'bower_components/bootstrap/dist/css/bootstrap.min.css');
						} else {
							$('#bs-css').attr('href',
									'css/bootstrap-' + themeName + '.min.css');
						}

						$('#themes i').removeClass(
								'glyphicon glyphicon-ok whitespace').addClass(
								'whitespace');
						$('#themes a[data-value=' + themeName + ']').find('i')
								.removeClass('whitespace').addClass(
										'glyphicon glyphicon-ok');
					}

					// ajax menu checkbox
					$('#is-ajax').click(function(e) {
						$.cookie('is-ajax', $(this).prop('checked'), {
							expires : 365
						});
					});
					$('#is-ajax').prop('checked',
							$.cookie('is-ajax') === 'true' ? true : false);

					// disbaling some functions for Internet Explorer
					if (msie) {
						$('#is-ajax').prop('checked', false);
						$('#for-is-ajax').hide();
						$('#toggle-fullscreen').hide();
						$('.login-box').find('.input-large').removeClass(
								'span10');

					}

					// highlight current / active link
					$('ul.main-menu li a').each(function() {
						if ($($(this))[0].href == String(window.location))
							$(this).parent().addClass('active');
					});

					// establish history variables
					var History = window.History, // Note: We are using a
					// capital H instead of a
					// lower h
					State = History.getState(), $log = $('#log');

					// bind to State Change
					History.Adapter.bind(window, 'statechange', function() { // Note:
						// We
						// are
						// using
						// statechange
						// instead
						// of
						// popstate
						var State = History.getState(); // Note: We are using
						// History.getState()
						// instead of
						// event.state
						$.ajax({
							url : State.url,
							success : function(msg) {
								$('#content').html(
										$(msg).find('#content').html());
								$('#loading').remove();
								$('#content').fadeIn();
								var newTitle = $(msg).filter('title').text();
								$('title').text(newTitle);
								docReady();
							}
						});
					});

					// ajaxify menus
					$('a.ajax-link')
							.click(
									function(e) {
										if (msie)
											e.which = 1;
										if (e.which != 1
												|| !$('#is-ajax').prop(
														'checked')
												|| $(this).parent().hasClass(
														'active'))
											return;
										e.preventDefault();
										$('.sidebar-nav').removeClass('active');
										$('.navbar-toggle').removeClass(
												'active');
										$('#loading').remove();
										$('#content')
												.fadeOut()
												.parent()
												.append(
														'<div id="loading" class="center">Loading...<div class="center"></div></div>');
										var $clink = $(this);
										History.pushState(null, null, $clink
												.attr('href'));
										$('ul.main-menu li.active')
												.removeClass('active');
										$clink.parent('li').addClass('active');
									});

					$('.accordion > a').click(function(e) {
						e.preventDefault();
						var $ul = $(this).siblings('ul');
						var $li = $(this).parent();
						if ($ul.is(':visible'))
							$li.removeClass('active');
						else
							$li.addClass('active');
						$ul.slideToggle();
					});

					$('.accordion li.active:first').parents('ul').slideDown();

					// other things to do on document ready, separated for ajax
					// calls
					docReady();
				});

function docReady() {
	// prevent # links from moving to top
	$('a[href="#"][data-top!=true]').click(function(e) {
		e.preventDefault();
	});

	// notifications
	$('.noty').click(function(e) {
		e.preventDefault();
		var options = $.parseJSON($(this).attr('data-noty-options'));
		noty(options);
	});

	// chosen - improves select
	$('[data-rel="chosen"],[rel="chosen"]').chosen();

	// tabs
	$('#myTab a:first').tab('show');
	$('#myTab a').click(function(e) {
		e.preventDefault();
		$(this).tab('show');
	});

	// tooltip
	$('[data-toggle="tooltip"]').tooltip();

	// auto grow textarea
	$('textarea.autogrow').autogrow();

	// popover
	$('[data-toggle="popover"]').popover();

	// iOS / iPhone style toggle switch
	$('.iphone-toggle').iphoneStyle();

	// star rating
	$('.raty').raty({
		score : 4
	// default stars
	});

	// uploadify - multiple uploads
	$('#file_upload').uploadify({
		'swf' : 'misc/uploadify.swf',
		'uploader' : 'misc/uploadify.php'
	// Put your options here
	});

	// gallery controls container animation
	$('ul.gallery li')
			.hover(
					function() {
						$('img', this).fadeToggle(1000);
						$(this).find('.gallery-controls').remove();
						$(this)
								.append(
										'<div class="well gallery-controls">'
												+ '<p><a href="#" class="gallery-edit btn"><i class="glyphicon glyphicon-edit"></i></a> <a href="#" class="gallery-delete btn"><i class="glyphicon glyphicon-remove"></i></a></p>'
												+ '</div>');
						$(this).find('.gallery-controls').stop().animate({
							'margin-top' : '-1'
						}, 400);
					}, function() {
						$('img', this).fadeToggle(1000);
						$(this).find('.gallery-controls').stop().animate({
							'margin-top' : '-30'
						}, 200, function() {
							$(this).remove();
						});
					});

	// gallery image controls example
	// gallery delete
	$('.thumbnails').on('click', '.gallery-delete', function(e) {
		e.preventDefault();
		// get image id
		// alert($(this).parents('.thumbnail').attr('id'));
		$(this).parents('.thumbnail').fadeOut();
	});
	// gallery edit
	$('.thumbnails').on('click', '.gallery-edit', function(e) {
		e.preventDefault();
		// get image id
		// alert($(this).parents('.thumbnail').attr('id'));
	});

	// gallery colorbox
	$('.thumbnail a').colorbox({
		rel : 'thumbnail a',
		transition : "elastic",
		maxWidth : "95%",
		maxHeight : "95%",
		slideshow : true
	});

	// gallery fullscreen
	$('#toggle-fullscreen')
			.button()
			.click(
					function() {
						var button = $(this), root = document.documentElement;
						if (!button.hasClass('active')) {
							$('#thumbnails').addClass('modal-fullscreen');
							if (root.webkitRequestFullScreen) {
								root
										.webkitRequestFullScreen(window.Element.ALLOW_KEYBOARD_INPUT);
							} else if (root.mozRequestFullScreen) {
								root.mozRequestFullScreen();
							}
						} else {
							$('#thumbnails').removeClass('modal-fullscreen');
							(document.webkitCancelFullScreen
									|| document.mozCancelFullScreen || $.noop)
									.apply(document);
						}
					});

	// tour
	if ($('.tour').length && typeof (tour) == 'undefined') {
		var tour = new Tour();
		tour.addStep({
			element : "#content",
			/* html element next to which the step popover should be shown */
			placement : "top",
			title : "Custom Tour",
			/* title of the popover */
			content : "You can create tour like this. Click Next." /*
																	 * content
																	 * of the
																	 * popover
																	 */
		});
		tour.addStep({
			element : ".theme-container",
			placement : "left",
			title : "Themes",
			content : "You change your theme from here."
		});
		tour
				.addStep({
					element : "ul.main-menu a:first",
					title : "Dashboard",
					content : "This is your dashboard from here you will find highlights."
				});
		tour.addStep({
			element : "#for-is-ajax",
			title : "Ajax",
			content : "You can change if pages load with Ajax or not."
		});
		tour.addStep({
			element : ".top-nav a:first",
			placement : "bottom",
			title : "Visit Site",
			content : "Visit your front end from here."
		});

		tour.restart();
	}

	// by dyq
	var table = $('#example')
			.DataTable(
					{
						"sDom" : "<'row'<'col-md-8'l><'col-md-4'f>>rt<'row'<'col-md-4'i><'col-md-6'p>>",
						"sPaginationType" : "bootstrap",
						"oLanguage" : {
							"sLengthMenu": "每页显示 _MENU_ 条记录",
              "sZeroRecords": "抱歉， 没有找到",
              "sInfo": "从 _START_ 到 _END_ /共 _TOTAL_ 条数据",
              "sInfoEmpty": "没有数据",
              "sInfoFiltered": "(从 _MAX_ 条数据中检索)",
              "sZeroRecords": "没有检索到数据",
               "sSearch": "搜索: &nbsp",
              "oPaginate": {
                "sFirst": "首页",
                "sPrevious": "前一页",
                "sNext": "后一页",
                "sLast": "尾页"
              }
						},
						"bProcessing" : true,
						"ajax" : {
							url : "../user/getAll",
							dataSrc : 'list'
						},

						"bRetrieve" : true,
						"columns" : [ {
							"data" : "id"
						}, {
							"data" : "name"
						}, {
							"data" : "gender"
						}, {
							"data" : "phone"
						}, {
							"data" : "birthday"
						},{
							"data" : "department"
						}, {
							"data" : "position"
						}, {
							"data" : "startworkdate"
						}, {
							"data" : "email"
						} ],
						"aoColumnDefs" : [
								{
									"mRender" : function(data, type, row) {
										var dyq = '<Button name="update" class="btn btn-success"><i class="glyphicon glyphicon-zoom-in icon-white"></i>更新</Button>&nbsp;&nbsp;&nbsp;<Button name="delete" class="btn btn-danger" href="#"> <i class = "glyphicon glyphicon-trash icon-white" > </i>删除</Button>'
										return dyq;
									},
									"aTargets" : [ 9 ]
								}, {
									"mRender" : function(data, type, row) {
										if (data == "0") {
											return "男";
										} else {
											return "女";
										}

									},
									"aTargets" : [ 2 ]
								} , {
									"mRender" : function(data, type, row) {
										if (data == "0") {
											return "员工";
										} else if(data == "1"){
											return "部门经理";
										}else if(data == "2"){
											return "副总经理";
										}else if(data == "3"){
											return "总经理";
										}

									},
									"aTargets" : [ 6 ]
								}]
					});

	$('#example tbody').on('click', 'button', function() {
		var dotype = $(this).attr("name");
		var data = table.row($(this).parents('tr')).data();
		if (dotype == "update") {
			update(data);
		} else if (dotype == "delete") {
			delet(data);
		}

	});

	function update(data) {
		//alert(data.birthday);
		$('#myname').val(data.name);
		$('input:radio').eq(data.gender).attr('checked', 'true');
		$('#myphone').val(data.phone);
		$('#myposition').val(data.position);
		$('#mydeparment').val(data.department);
		$('#mystartworktdate').val(data.startworkdate);
		$('#myemail').val(data.email);
		$('#mybirthday').val(data.birthday);
		$('#mypwd').val(data.pwd);
		$('#myid').val(data.id);
		$('#bt2').hide();
		$('#bt1').show();
		$('#myModal').modal('show');
	}

	function delet(data) {
		$.confirm({
			confirmButtonClass : 'btn-danger',
			cancelButtonClass : 'btn-info',
			confirmButton : '确定',
			cancelButton : '取消',
			content : "您确定要删除该员工吗？",
			title : "删除员工",
			confirm : function() {
				$.ajax({
					type : "get",
					url : "../user/delete/" + data.id,
					async : true,
					success : function(result) {
						window.location.reload();
					}
				});
			}
		});
	}
	// by dyq

	$('.btn-close').click(function(e) {
		e.preventDefault();
		$(this).parent().parent().parent().fadeOut();
	});
	$('.btn-minimize').click(
			function(e) {
				e.preventDefault();
				var $target = $(this).parent().parent().next('.box-content');
				if ($target.is(':visible'))
					$('i', $(this)).removeClass('glyphicon-chevron-up')
							.addClass('glyphicon-chevron-down');
				else
					$('i', $(this)).removeClass('glyphicon-chevron-down')
							.addClass('glyphicon-chevron-up');
				$target.slideToggle();
			});
	$('.btn-setting').click(function(e) {
		e.preventDefault();
		$('#myModal').modal('show');
	});

	$('#calendar').fullCalendar({
		header : {
			left : 'prev,next today',
			center : 'title',
			right : 'month,agendaWeek,agendaDay'
		},
		defaultDate : '2014-06-12',
		events : [ {
			title : 'All Day Event',
			start : '2014-06-01'
		}, {
			title : 'Long Event',
			start : '2014-06-07',
			end : '2014-06-10'
		}, {
			id : 999,
			title : 'Repeating Event',
			start : '2014-06-09T16:00:00'
		}, {
			id : 999,
			title : 'Repeating Event',
			start : '2014-06-16T16:00:00'
		}, {
			title : 'Meeting',
			start : '2014-06-12T10:30:00',
			end : '2014-06-12T12:30:00'
		}, {
			title : 'Lunch',
			start : '2014-06-12T12:00:00'
		}, {
			title : 'Birthday Party',
			start : '2014-06-13T07:00:00'
		}, {
			title : 'Click for Google',
			url : 'http://google.com/',
			start : '2014-06-28'
		} ]
	});

}

// additional functions for data table
$.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) {
	return {
		"iStart" : oSettings._iDisplayStart,
		"iEnd" : oSettings.fnDisplayEnd(),
		"iLength" : oSettings._iDisplayLength,
		"iTotal" : oSettings.fnRecordsTotal(),
		"iFilteredTotal" : oSettings.fnRecordsDisplay(),
		"iPage" : Math.ceil(oSettings._iDisplayStart
				/ oSettings._iDisplayLength),
		"iTotalPages" : Math.ceil(oSettings.fnRecordsDisplay()
				/ oSettings._iDisplayLength)
	};
}
$
		.extend(
				$.fn.dataTableExt.oPagination,
				{
					"bootstrap" : {
						"fnInit" : function(oSettings, nPaging, fnDraw) {
							var oLang = oSettings.oLanguage.oPaginate;
							var fnClickHandler = function(e) {
								e.preventDefault();
								if (oSettings.oApi._fnPageChange(oSettings,
										e.data.action)) {
									fnDraw(oSettings);
								}
							};

							$(nPaging)
									.addClass('pagination')
									.append(
											'<ul class="pagination">'
													+ '<li class="prev disabled"><a href="#">&larr; '
													+ oLang.sPrevious
													+ '</a></li>'
													+ '<li class="next disabled"><a href="#">'
													+ oLang.sNext
													+ ' &rarr; </a></li>'
													+ '</ul>');
							var els = $('a', nPaging);
							$(els[0]).bind('click.DT', {
								action : "previous"
							}, fnClickHandler);
							$(els[1]).bind('click.DT', {
								action : "next"
							}, fnClickHandler);
						},

						"fnUpdate" : function(oSettings, fnDraw) {
							var iListLength = 5;
							var oPaging = oSettings.oInstance.fnPagingInfo();
							var an = oSettings.aanFeatures.p;
							var i, j, sClass, iStart, iEnd, iHalf = Math
									.floor(iListLength / 2);

							if (oPaging.iTotalPages < iListLength) {
								iStart = 1;
								iEnd = oPaging.iTotalPages;
							} else if (oPaging.iPage <= iHalf) {
								iStart = 1;
								iEnd = iListLength;
							} else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) {
								iStart = oPaging.iTotalPages - iListLength + 1;
								iEnd = oPaging.iTotalPages;
							} else {
								iStart = oPaging.iPage - iHalf + 1;
								iEnd = iStart + iListLength - 1;
							}

							for (i = 0, iLen = an.length; i < iLen; i++) {
								// remove the middle elements
								$('li:gt(0)', an[i]).filter(':not(:last)')
										.remove();

								// add the new list items and their event
								// handlers
								for (j = iStart; j <= iEnd; j++) {
									sClass = (j == oPaging.iPage + 1) ? 'class="active"'
											: '';
									$(
											'<li ' + sClass + '><a href="#">'
													+ j + '</a></li>')
											.insertBefore(
													$('li:last', an[i])[0])
											.bind(
													'click',
													function(e) {
														e.preventDefault();
														oSettings._iDisplayStart = (parseInt(
																$('a', this)
																		.text(),
																10) - 1)
																* oPaging.iLength;
														fnDraw(oSettings);
													});
								}

								// add / remove disabled classes from the static
								// elements
								if (oPaging.iPage === 0) {
									$('li:first', an[i]).addClass('disabled');
								} else {
									$('li:first', an[i])
											.removeClass('disabled');
								}

								if (oPaging.iPage === oPaging.iTotalPages - 1
										|| oPaging.iTotalPages === 0) {
									$('li:last', an[i]).addClass('disabled');
								} else {
									$('li:last', an[i]).removeClass('disabled');
								}
							}
						}
					}
				});